home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-09-24 | 13.0 KB | 339 lines |
- 10 CLS:WIDTH 80:CLEAR 1000:KEY OFF:SCREEN 0:COLOR 0,7,0:CLS
- 20 RANDOMIZE VAL(RIGHT$(TIME$,2))
- 30 LOCATE 9,10:PRINT " $$$ BRIDGE GAME $$$":LOCATE 11,11:PRINT"CONTRACT":LOCATE 13,12:PRINT"OR DUPLICATE."
- 40 PRINT:DIM C(52),P(52),V(4,5),Y(4,5),F(4,13),T9(4),X(4),G(4)
- 50 DIM T$(104),E$(56),A$(13),Z$(26),D$(13):DEFINT I-N,G,T,W
- 60 A$="23456789TJQKA":N$="1234567"
- 70 B$="XCDHS"
- 80 LOCATE 18,6:PRINT"DO YOU WISH TO PLAY CONTRACT":LOCATE 19,6:INPUT"BRIDGE OR DUPLICATE BRIDGE ";Q$
- 90 CLS:R9=R9-4*INT(R9/4)+1:K1=0:K=R9:FOR I=1 TO 52:P(I)=I:NEXT:V5=14
- 100 IF Q$<>"C" AND Q$<>"c" THEN 120 ELSE 110
- 110 COLOR 0,7,0:LOCATE 11,15:PRINT "SHUFFLING":GOTO 220
- 120 A=3.14159:B=2.71828:C=1.41421:T1=0.5
- 130 PRINT "INPUT ANY POSITIVE NUMBER LESS THAN 1000":INPUT A9
- 140 PRINT :PRINT "SHUFFLING";
- 150 X9=A9:FOR J=52 TO 1 STEP-1
- 160 I2=I2+1:X9=1+ABS(X9):E=(E+(1+X9/B)*C)*I2:E=E-1*INT(E/A):E=E-INT(E)+0.018
- 170 IF E>0.5 THEN E=T1*(E-T1)+T1
- 180 R=INT(E*J+1):C(J)=P(R):P(R)=P(J):NEXT J:IF C(1)<13 THEN R9=1:GOTO 240
- 190 IF C(1)<27 THEN R9=2:GOTO 240
- 200 IF C(1)<40 THEN R9=3:GOTO 240
- 210 R9=4:GOTO 240
- 220 FOR J=52 TO 1 STEP-1
- 230 R=INT((RND*1)*J+1):C(J)=P(R):P(R)=P(J):NEXT
- 240 FOR I=1 TO 4:T9(I)=13:M=I*13-13:FOR J=1 TO 13:F(I,J)=C(J+M):NEXT:NEXT
- 250 COLOR 0:LOCATE 11,15:PRINT "SHUFFLING":LOCATE 12,16:COLOR 0,7,0:PRINT "DEALING"
- 260 FOR I=1 TO 4
- 270 T1=0
- 280 FOR J=2 TO 13:IF F(I,J-1)>F(I,J) THEN 300
- 290 T2=F(I,J):F(I,J)=F(I,J-1):F(I,J-1)=T2:T1=1
- 300 NEXT J:IF T1=1 THEN 270
- 310 NEXT:T$="":FOR L=1 TO 4:FOR I=1 TO 13
- 320 J=F(L,I)-13*INT(F(L,I)/13):M=INT((F(L,I)-0.1)/13):IF J=0 THEN J=13
- 330 Z$=MID$(A$,J,1)+MID$(B$,M+2,1):T$=T$+Z$:NEXT:NEXT
- 340 COLOR 0:LOCATE 12,16:PRINT "DEALING":R=1:H=0:COLOR 0,7,0:LOCATE 13,16:PRINT "SORTING":GOSUB 2460:K=1:L5=4:CLS
- 350 COLOR 0:LOCATE 2,2:PRINT"YOUR HAND (SOUTH):":PRINT:GOSUB 2220:E$="":S$="1A":K=R9-1
- 360 PRINT:IF K>0 THEN 480 ELSE PRINT" YOU ARE THE DEALER, WHAT DO YOU BID ?":PRINT
- 370 K=1:K1=K1+1:PRINT"SOUTH";
- 380 INPUT Z$:IF Z$="" THEN 440 ELSE IF LEFT$(Z$,1)<>"P" THEN 390 ELSE C(K1)=1:E$=E$+"00":IF K1<4 THEN 480 ELSE 560
- 390 IF MID$(Z$,2,1)="N" THEN Z$=LEFT$(Z$,1)+ "X"
- 400 IF LEFT$(Z$,1)<>"D" THEN 430 ELSE IF C(K1-1)=0 THEN 420 ELSE IF C(K1-2)=1 THEN 420
- 410 PRINT" YOU CANNOT DOUBLE YOUR OWN PARTNER'S BID !":GOTO 440
- 420 C(K1)=0:E$=E$+"DB":IF K1<4 THEN 490 ELSE 560
- 430 IF Z$>S$ THEN 450
- 440 PRINT" ILLEGAL BID, TRY AGAIN.":GOTO 380
- 450 C(K1)=0:IF K1>4 THEN 470
- 460 FOR I=1 TO 5:IF MID$(Z$,2,1)=MID$(B$,I,1) THEN X(1)=6-I:NEXT
- 470 E$=E$+Z$:S$=Z$
- 480 K=K+1:IF K>4 THEN 370 ELSE GOSUB 600:IF C(K1)=0 THEN 570
- 490 GOSUB 2760:IF K=3 THEN 550
- 500 T1=LEN(E$):IF T1<5 THEN 550
- 510 Z$=MID$(E$,T1-1,2):IF Z$="00" THEN 520 ELSE IF Z$="DB" THEN 550 ELSE 530
- 520 IF MID$(E$,T1-3,2)<>"00" THEN 550
- 530 GOSUB 3370:IF F1<>2 THEN 550
- 540 PRINT F$;": DOUBLE":E$=E$+"DB":IF K1<4 THEN 480 ELSE 560
- 550 PRINT F$;": PASS":E$=E$+"00"
- 560 IF K1<4 THEN 480 ELSE IF MID$(E$,2*K1-5,6)="000000" THEN 940 ELSE 480
- 570 GOSUB 3170:IF F1=1 THEN 490
- 580 S$=D$:E$=E$+S$:IF MID$(S$,2,1)="X" THEN D$=MID$(S$,1,1)+"NT"
- 590 GOSUB 2760:PRINT F$;": ";D$:GOTO 480
- 600 K1=K1+1:C(K1)=0:L=K-2:IF L<=0 THEN L=K+2
- 610 IF K1>4 THEN 780 ELSE IF K1>2 THEN 660
- 620 IF P(K)>23 THEN 740 ELSE IF P(K)>12 THEN 650
- 630 C(K1)=1:RETURN
- 640 GOSUB 3110:RETURN
- 650 GOSUB 3050:RETURN
- 660 IF C(K1-2)=1 THEN 620 ELSE IF P(K)>5 THEN 680 ELSE IF P(L)>23 THEN 650
- 670 IF C(K1-1)=0 THEN 630 ELSE IF MID$(E$,2*K1-5,1)<>"D" THEN 630 ELSE 650
- 680 IF P(K)>9 THEN 740 ELSE IF V(K,X(K))<5 THEN 700
- 690 IF MID$(B$,6-X(K),1)>MID$(S$,2,1) THEN 650
- 700 IF X(L)=5 THEN 650
- 710 IF V(K,X(L))>3 THEN 770
- 720 IF V(K,X(L))<2 THEN 630 ELSE IF Y(K,X(L))=0 THEN 730 ELSE 770
- 730 IF S$>="1X" THEN 630 ELSE D$="1X":RETURN
- 740 IF P(K)<14 THEN 650 ELSE IF P(K)>18 THEN L=K:GOTO 640
- 750 IF V(K,X(L))<4 THEN 650 ELSE IF V(K,X(K))<5 THEN 650
- 760 IF Y(K,X(K))<4 THEN 650 ELSE 640
- 770 GOSUB 3080:RETURN
- 780 IF P(K)>5 THEN 790 ELSE IF P(K)+P(L)>25 THEN 870
- 790 IF V(K,X(K))>4 THEN 810 ELSE IF P(K)>16 THEN 810
- 800 IF C(K1-2)=1 THEN 630 ELSE IF P(K)<10 THEN 700 ELSE IF K1<8 THEN 930 ELSE 870
- 810 IF C(K1-2)=0 THEN 830
- 820 IF P(K)<14 THEN 630 ELSE IF V(K,X(K))<5 THEN 630 ELSE 650
- 830 IF MID$(E$,2*(K1-1)-2,1)="X" THEN 900
- 840 IF K1>7 THEN 870 ELSE IF MID$(S$,1,1)>"2" THEN 870
- 850 IF V(K,X(K))<5 THEN 870 ELSE IF P(K)>9 THEN 650
- 860 IF MID$(B$,6-X(K),1)>MID$(S$,2,1)THEN 650 ELSE 710
- 870 IF X(L)=0 THEN 650 ELSE M1=Y(K,X(K))+V(K,X(K))+Y(L,X(K))+V(L,X(K))
- 880 M2=Y(K,X(L))+V(K,X(L))+Y(L,X(L))+V(L,X(L))
- 890 IF M1>=M2 THEN 650 ELSE IF V(K,X(L))<2 THEN 650 ELSE X(K)=X(L):GOTO 770
- 900 IF P(K)<6 THEN 630 ELSE IF MID$(E$,2*(K1-1)-3,2)="3X" THEN 630
- 910 F1=0:FOR I=1 TO 4:IF V(K,I)>4 THEN F1=1
- 920 NEXT:IF F1=1 THEN 650 ELSE IF K1>4 THEN 930 ELSE IF P(K)>12 THEN 640
- 930 GOSUB 3140:RETURN
- 940 I2=LEN(E$)-7:T1=6:IF MID$(E$,I2,1)<>"D" THEN 950 ELSE IF MID$(E$,I2-4,4)="0000" THEN T1=12 ELSE T1=8
- 950 X=(K1*2-T1)/2+(R9-1):W8=X-4*INT(X/4):IF W8=0 THEN W8=4
- 960 T4=W8-2:IF T4<1 THEN T4=W8+2
- 970 K=0:T1=K1*2-2:I=0
- 980 I=I+2:K=K+1:IF MID$(E$,I,1)<>MID$(S$,2,1) THEN 1010
- 990 K1=(K+(R9-1))-4*INT((K+(R9-1))/4):IF K1=0 THEN K1=4
- 1000 IF K1=W8 OR K1=T4 THEN 1030
- 1010 IF I<T1 THEN 980 ELSE PRINT " EVERYONE PASSES, REDEAL."
- 1020 FOR Y=1 TO 750:NEXT:GOTO 90
- 1030 FOR I=1 TO 5:IF MID$(S$,2,1)=MID$(B$,6-I,1) THEN X=I
- 1040 NEXT
- 1050 IF X=5 THEN S$=MID$(S$,1,1)+"NT"
- 1060 IF MID$(E$,I2,1)="D" THEN S$=S$+" (DBL)"
- 1070 CLS:PRINT"THE CONTRACT IS: ";S$:K=K1:GOSUB 2760
- 1080 PRINT"THE DECLARER IS: ";F$:PRINT:PRINT:K2=K1+2:IF K2>4 THEN K2=K1-2
- 1090 R=0:W8=0:T4=0:PRINT"REVIEW OF THE BIDDING:":PRINT:PRINT"SOUTH WEST NORTH EAST":T1=R9*7-7:PRINT TAB(T1);:I=-1:T2=R9-1:T3=LEN(E$)
- 1100 I=I+2:IF I>T3 THEN 1160
- 1110 D$=MID$(E$,I,2)+" ":T2=T2+1:IF T2>4 THEN PRINT:T2=1
- 1120 IF MID$(E$,I+1,1)="X" THEN D$=MID$(E$,I,1)+"NT "
- 1130 IF MID$(E$,I,2)="DB" THEN D$="DBL "
- 1140 IF MID$(E$,I,2)="00" THEN D$="PASS"
- 1150 PRINT D$;" ";:GOTO 1100
- 1160 PRINT:PRINT:PRINT" READY TO PLAY";:INPUT D$:CLS
- 1170 H=H+1:IF H=5 THEN 2050 ELSE K=K+1:IF K>4 THEN K=1
- 1180 L=K-2:IF L<1 THEN L=K+2
- 1190 M1=K+1:IF M1=5 THEN M1=1
- 1200 M2=M1+2:IF M2>4 THEN M2=M1-2
- 1210 IF H>1 THEN 1290 ELSE G2=0
- 1220 IF R=13 THEN 2930 ELSE R=R+1:PRINT:CLS:LOCATE 1,16:PRINT"ROUND:";R:LOCATE 3,8:PRINT S$;" WE:";W8;" THEY:";T4:K3=K:PRINT
- 1230 IF K1-2*INT(K1/2)=0 THEN 1240 ELSE L5=5:K=3:PRINT" NORTH:":GOSUB 2220: GOTO 1270
- 1240 K=K1+2:IF K1=4 AND R=1 THEN 1270 ELSE IF K>4 THEN K=K1-2
- 1250 L5=7:IF K1=2 THEN L5=17
- 1260 GOSUB 2760:PRINT TAB(L5-4);F$;":":GOSUB 2220
- 1270 K=1:L5=7:IF K1<>4 THEN 1280 ELSE L5=17
- 1280 PRINT TAB(L5-4);"SOUTH:":GOSUB 2220:K=K3
- 1290 IF K>1 THEN 1370 ELSE K2=K:GOSUB 2360:GOSUB 2760
- 1300 PRINT F$;" PLAYS";:INPUT D$:IF LEN(D$)<2 THEN 1350 ELSE IF H=1 THEN 1330
- 1310 IF MID$(D$,2,1)=MID$(B$,6-N,1) THEN 1330 ELSE IF V(K,N)=0 THEN 1330
- 1320 PRINT"RENEGE, TRY AGAIN.":GOTO 1300
- 1330 F1=0:FOR I=1 TO T9(K)*2-1:IF D$=MID$(Z$,I,2) THEN F1=1
- 1340 NEXT:IF F1=1 THEN 1360
- 1350 PRINT" ERROR IN LEAD, TRY AGAIN.":GOTO 1300
- 1360 GOSUB 2080:IF G(K)<G2 THEN 1170 ELSE G2=G(K):GOTO 1170
- 1370 IF K<>3 THEN 1390 ELSE IF K1-2*INT(K1/2)=0 THEN 1390
- 1380 K2=K:GOSUB 2360:GOSUB 2760:GOTO 1300
- 1390 IF H>1 THEN 1830 ELSE GOSUB 2620
- 1400 IF T1=4 THEN 1420 ELSE IF K=K1 OR L=K1 THEN 1450
- 1410 IF VAL(MID$(S$,1,1))>7-R THEN 1450
- 1420 IF V(K,X(L))=0 THEN 1450 ELSE IF X(L)<>X THEN 1430 ELSE IF K=K1 OR L=K1 THEN 1430 ELSE 1590
- 1430 K2=K:GOSUB 2360:T1=0:FOR I=1 TO X(L):T1=T1+V(K,I):NEXT:D$=MID$(Z$,2*T1-1,2)
- 1440 GOSUB 2080:G2=G(K):GOSUB 2760:PRINT F$;" PLAYS: ";D$:GOTO 1170
- 1450 IF V(K,X)=0 THEN 1520 ELSE IF K=K1 OR L=K1 THEN 1460 ELSE 1520
- 1460 IF V(M1,X)+V(M2,X)=0 THEN 1520
- 1470 K2=K:K$=MID$(B$,6-X,1):GOSUB 2840:G3=G(K):K2=L:GOSUB 2840
- 1480 IF G3>G(K) THEN 1510
- 1490 K2=K:GOSUB 2360:T1=0:FOR I=1 TO X:T1=T1+V(K,I):NEXT
- 1500 D$=MID$(Z$,2*T1-1,2):GOTO 1440
- 1510 K2=K:GOSUB 2840:GOTO 1440
- 1520 J=0
- 1530 J=J+1:IF V(M1,J)>0 THEN 1540 ELSE IF V(M1,X)>0 THEN 1570
- 1540 IF V(M2,J)>0 THEN 1550 ELSE IF V(M2,X)>0 THEN 1570
- 1550 IF J=X THEN 1570 ELSE K$=MID$(B$,6-J,1):K2=K:GOSUB 2840:T2=G(K):K2=M1:GOSUB 2840:IF G(K)>T2 THEN 1570
- 1560 K2=M2:GOSUB 2840:IF G(K)<T2 THEN 1580
- 1570 IF J<4 THEN 1530 ELSE IF V(K,X(L))=0 THEN 1590 ELSE 1430
- 1580 K2=K:GOSUB 2840:GOTO 1440
- 1590 K2=K:GOSUB 2360:T1=300:T2=1:FOR I=1 TO 27-2*R STEP 2:D$=MID$(Z$,I,2)
- 1600 IF MID$(D$,2,1)=MID$(S$,2,1) THEN 1620 ELSE GOSUB 2880:IF G(K)>T1 THEN 1620
- 1610 T1=G(K):T2=I
- 1620 NEXT:D$=MID$(Z$,T2,2):GOSUB 2080:IF G(K)>G2 THEN G2=G(K)
- 1630 GOSUB 2760:PRINT F$;" PLAYS: ";D$:GOTO 1170
- 1640 T1=0:FOR I=1 TO N:T1=T1+V(K,I):NEXT:K2=K:GOSUB 2360:D$=MID$(Z$,2*T1-1,2)
- 1650 GOSUB 2080:IF G(K)>G2 THEN G2=G(K)
- 1660 GOSUB 2760:PRINT F$;" PLAYS: ";D$:GOTO 1170
- 1670 IF V(K,X)=0 THEN 1590 ELSE G3=G2
- 1680 IF H<4 THEN 1750 ELSE IF G(L)=G2 THEN 1590
- 1690 T1=0:IF X=1 THEN 1710
- 1700 FOR I=1 TO X-1:T1=T1+V(K,I)*2:NEXT
- 1710 K2=K:GOSUB 2360:T2=T1+2*V(K,X)-1
- 1720 I=T1-1
- 1730 I=I+2:D$=MID$(Z$,I,2):GOSUB 2880:IF G(K)>G3 THEN 1740 ELSE IF I=T1+1 THEN 1590 ELSE 1920
- 1740 IF I<T2 THEN 1730 ELSE IF G(K)>G3 THEN 1930 ELSE 1590
- 1750 IF H=3 THEN 1780 ELSE IF V(L,N)>0 THEN 1770 ELSE IF V(L,X)>0 THEN 1590
- 1760 G(L)=0:GOTO 1780
- 1770 K2=L:K$=MID$(B$,6-N,1):GOSUB 2840:G(L)=G(K)
- 1780 K2=M1:IF V(M1,N)>0 THEN 1800 ELSE IF V(M1,X)=0 THEN G4=0:GOTO 1810
- 1790 K$=MID$(B$,6-X,1):GOSUB 2840:G4=G(K):GOTO 1810
- 1800 K$=MID$(B$,6-N,1):GOSUB 2840:G4=G(K)
- 1810 IF G4>G3 THEN G3=G4
- 1820 IF G(L)<G3 THEN 1690 ELSE 1590
- 1830 IF V(K,N)=0 THEN 1670 ELSE IF V(K,N)=1 THEN 1640 ELSE G3=G2:IF H<4 THEN 1940
- 1840 IF G(L)=G2 THEN 1640
- 1850 T1=0:IF N=1 THEN 1860 ELSE FOR I=1 TO N-1:T1=T1+V(K,I)*2:NEXT
- 1860 T2=T1+1+V(K,N)*2-2:K2=K:GOSUB 2360:I=T1-1
- 1870 I=I+2:D$=MID$(Z$,I,2):GOSUB 2880:IF G(K)>G3 THEN 1880 ELSE 1890
- 1880 IF I<T2 THEN 1870
- 1890 IF I=T1+1 THEN 1930 ELSE IF G(K)>G3 THEN 1930
- 1900 D$=MID$(Z$,I-2,2):GOSUB 2880:IF G(K)>G3 THEN 1920
- 1910 IF H=3 THEN GOSUB 2380:IF F1=1 THEN 1650
- 1920 D$=MID$(Z$,I-2,2):GOTO 1650
- 1930 D$=MID$(Z$,T2,2):GOTO 1650
- 1940 IF H=3 THEN 1980 ELSE K2=L:IF V(L,N)>0 THEN 1970
- 1950 IF V(L,X)>0 THEN 1960 ELSE G(L)=0:GOTO 1980
- 1960 K$=MID$(B$,6-X,1):GOSUB 2840:G(L)=G(K):GOTO 1980
- 1970 K$=MID$(B$,6-N,1):GOSUB 2840:G(L)=G(K)
- 1980 K2=M1:IF V(M1,N)>0 THEN 2010
- 1990 IF V(M1,X)>0 THEN 2000 ELSE G4=0:GOTO 2020
- 2000 K$=MID$(B$,6-X,1):GOSUB 2840:G4=G(K):GOTO 2020
- 2010 K$=MID$(B$,6-N,1):GOSUB 2840:G4=G(K)
- 2020 IF G4>G3 THEN G3=G4
- 2030 IF G(L)>=G3 THEN 1640 ELSE IF H<>3 THEN 1850
- 2040 GOSUB 2380:IF F1=1 THEN 1650 ELSE 1850
- 2050 T3=0:FOR K=1 TO 4:IF G(K)>T3 THEN T3=G(K):T1=K
- 2060 NEXT:IF T1-2*INT(T1/2)=1 THEN W8=W8+1 ELSE T4=T4+1
- 2070 H=0:K=T1-1:GOTO 1170
- 2080 T3=N:FOR I=1 TO 4:IF MID$(D$,2,1)<>MID$(B$,6-I,1) THEN 2100
- 2090 V(K,I)=V(K,I)-1:N=I
- 2100 NEXT:T2=(111-8*R)-2*(H-1):I=-1
- 2110 I=I+2
- 2120 IF D$=MID$(T$,I,2) THEN 2130 ELSE IF I<T2 THEN 2110
- 2130 IF I=T2 THEN 2160 ELSE IF I>1 THEN 2150
- 2140 T$=MID$(T$,3,104):GOTO 2170
- 2150 T$=MID$(T$,1,I-1)+MID$(T$,I+2,104):GOTO 2170
- 2160 IF T2=1 THEN 2170 ELSE T$=MID$(T$,1,T2-1)
- 2170 T9(K)=T9(K)-1:IF H=1 OR N=T3 THEN 2200
- 2180 IF N=X THEN 2190 ELSE N=T3:G(K)=0:RETURN
- 2190 N=T3
- 2200 GOSUB 2880
- 2210 RETURN
- 2220 D$="":T1=(28-2*R)*(K-1)+1:Z$=MID$(T$,T1,2*(14-R)-1)
- 2230 FOR I=1 TO 27-2*R STEP 2:D$=D$+MID$(Z$,I,1):NEXT
- 2240 IF V(K,1)=0 THEN 2260
- 2250 COLOR 0:PRINT TAB(L5);CHR$(6);" ";MID$(D$,1,V(K,1)):PRINT:GOTO 2270
- 2260 COLOR 0:PRINT TAB(L5);CHR$(6):PRINT
- 2270 IF V(K,2)=0 THEN 2290
- 2280 COLOR 0:PRINT TAB(L5);CHR$(3);" ";MID$(D$,V(K,1)+1,V(K,2)):PRINT:GOTO 2300
- 2290 COLOR 0:PRINT TAB(L5);CHR$(3):PRINT
- 2300 IF V(K,3)=0 THEN 2320
- 2310 T1=V(K,1)+V(K,2):COLOR 0:PRINT TAB(L5);CHR$(4);" ";MID$(D$,T1+1,V(K,3)):PRINT:GOTO 2330
- 2320 COLOR O:PRINT TAB(L5);CHR$(4):PRINT:IF V(K,4)=0 THEN 2350
- 2330 IF V(K,4)=0 THEN 2350
- 2340 T1=V(K,1)+V(K,2)+V(K,3):COLOR 0:PRINT TAB(L5);CHR$(5);" ";MID$(D$,T1+1,V(K,4)):PRINT:RETURN
- 2350 COLOR 0:PRINT TAB(L5);CHR$(5):PRINT:RETURN
- 2360 T5=0:IF K2=1 THEN 2370 ELSE FOR I=1 TO K2-1:T5=T5+2*T9(I):NEXT
- 2370 Z$=MID$(T$,T5+1,2*T9(K2)):RETURN
- 2380 K2=K:GOSUB 2360:T1=0:IF N=1 THEN 2390 ELSE FOR I=1 TO N-1:T1=T1+V(K,I)*2:NEXT
- 2390 T2=T1+1+V(K,N)*2-2
- 2400 K$=MID$(B$,6-N,1):GOSUB 2840:I=T1-1:IF G(K)>G3 THEN F1=0:RETURN
- 2410 I=I+2
- 2420 D$=MID$(Z$,I,2):GOSUB 2880:IF G(K)>G2 THEN 2430 ELSE 2440
- 2430 IF I<T2 THEN 2410
- 2440 IF I<>T1+1 THEN 2450 ELSE D$=MID$(Z$,T2,2):F1=1:RETURN
- 2450 D$=MID$(Z$,I-2,2):F1=1:RETURN
- 2460 FOR I=1 TO 4:P(I)=0:FOR J=1 TO 5:V(I,J)=0:Y(I,J)=0:NEXT:NEXT
- 2470 FOR I=1 TO 4:FOR J=1 TO 13
- 2480 T2=F(I,J)-13*INT(F(I,J)/13):T1=5-(INT((F(I,J)-0.9)/13)+1):IF T2=0 THEN T2=13
- 2490 IF T2<10 THEN 2500 ELSE T2=T2-9:Y(I,T1)=Y(I,T1)+T2
- 2500 V(I,T1)=V(I,T1)+1:NEXT:NEXT
- 2510 FOR I=1 TO 4:FOR J=1 TO 4:T1=3-V(I,J):IF T1<=0 THEN T1=0
- 2520 P(I)=P(I)+Y(I,J)+T1:F(I,J)=V(I,J)+(2*(V(I,J)-4)+Y(I,J)):IF V(I,J)<4 THEN F(I,J)=0
- 2530 NEXT:NEXT:I=0
- 2540 I=I+1:IF I>4 THEN RETURN ELSE T1=-1:FOR J=1 TO 4:IF F(I,J)<=T1 THEN 2560
- 2550 T1=F(I,J):T2=J
- 2560 NEXT J
- 2570 IF F(I,1)+T2>1 THEN 2580 ELSE X(I)=5:GOTO 2590
- 2580 X(I)=T2
- 2590 IF P(I)<16 THEN 2610 ELSE FOR J=1 TO 4:IF Y(I,J)<2 THEN 2610 ELSE IF V(I,J)<3 THEN 2610
- 2600 NEXT:X(I)=5:V(I,5)=5:Y(I,5)=7:F(I,5)=42
- 2610 GOTO 2540
- 2620 GOSUB 2780:IF T1>0 THEN RETURN ELSE K2=L:GOSUB 2360:T2=0
- 2630 FOR J=1 TO 4:T3=1+T2:F(L,J)=0:FOR I=T3 TO T3+V(L,J)-1:D$=MID$(Z$,2*I-1,2):GOSUB 2880:N2=N2-9:IF N2<0 THEN N2=0
- 2640 F(L,J)=F(L,J)+N2:NEXT:T2=T2+V(L,J):NEXT
- 2650 IF MID$(S$,2,1)="X" THEN 2700 ELSE IF V(L,X)=0 THEN 2700
- 2660 FOR J=1 TO 4:IF V(L,J)>0 THEN 2670 ELSE IF V(K,J)=0 THEN 2670 ELSE 2690
- 2670 NEXT
- 2680 IF V(L,4)>0 THEN 2700
- 2690 F(L,J)=10
- 2700 T2=-1:FOR J=1 TO 4:IF F(L,J)<=T2 THEN 2710 ELSE T2=F(L,J):F1=J
- 2710 NEXT:X(L)=F1:RETURN
- 2720 GOSUB 2360:T3=0:IF N=1 THEN 2740
- 2730 FOR I=1 TO N-1:T3=T3+V(K2,I):NEXT
- 2740 IF T3=14-R THEN T3=T3-1
- 2750 D$=MID$(Z$,2*T3+1,2):GOSUB 2880:RETURN
- 2760 IF K=1 THEN F$="SOUTH" ELSE IF K=2 THEN F$=" WEST" ELSE IF K=3 THEN F$="NORTH" ELSE IF K=4 THEN F$=" EAST":RETURN
- 2770 RETURN
- 2780 J=0
- 2790 J=J+1:K$=MID$(B$,6-J,1):IF J=X THEN 2800 ELSE K2=L:GOSUB 2840:T1=G(K):K2=M1:GOSUB 2840:IF G(K)>T1 THEN 2800 ELSE K2=M2:GOSUB 2840:IF G(K)<T1 THEN 2810
- 2800 IF J<4 THEN 2790 ELSE T1=0:RETURN
- 2810 IF V(K,J)=0 THEN 2800 ELSE IF X=5 THEN 2830 ELSE IF V(M1,J)>0 THEN 2820 ELSE IF V(M1,X)>0 THEN 2800
- 2820 IF V(M2,J)>0 THEN 2830 ELSE IF V(M2,X)>0 THEN 2800
- 2830 X(L)=J:T1=4:RETURN
- 2840 GOSUB 2360:I=0:F1=14-R
- 2850 I=I+1:IF MID$(Z$,2*I,1)=K$ THEN 2870
- 2860 IF I<F1 THEN 2850 ELSE G(K)=0:RETURN
- 2870 D$=MID$(Z$,2*I-1,2):GOSUB 2880:RETURN
- 2880 N1=0:IF MID$(D$,2,1)=MID$(S$,2,1) THEN N1=13
- 2890 FOR I2=9 TO 13:IF MID$(D$,1,1)=MID$(A$,I2,1) THEN N2=I2
- 2900 NEXT
- 2910 IF MID$(D$,1,1)<"A" THEN N2=VAL(MID$(D$,1,1))-1
- 2920 G(K)=N1+N2:RETURN
- 2930 PRINT:PRINT" THE CONTRACT WAS ";S$;".":T1=VAL(LEFT$(S$,1)):IF K1-2*INT(K1/2)=1 THEN 2970 ELSE T3=T4-6-T1:IF T3=0 THEN 2950 ELSE IF T3>0 THEN 2960
- 2940 PRINT:PRINT" YOUR OPPONENTS WERE SET";ABS(T3);"TRICK(S).":GOTO 3020
- 2950 PRINT:PRINT" YOUR OPPONENTS MADE THEIR CONTRACT.":GOTO 3020
- 2960 PRINT:PRINT" YOUR OPPONENTS MADE THEIR CONTRACT":PRINT" PLUS";T3;"OVERTRICK(S).":GOTO 3020
- 2970 T3=W8-6-T1:IF T3=0 THEN 2990 ELSE IF T3>0 THEN 3000
- 2980 PRINT:PRINT" YOU WERE SET";ABS(T3);"TRICK(S).":GOTO 3020
- 2990 PRINT:PRINT" YOU MADE YOUR CONTRACT.":GOTO 3020
- 3000 PRINT:PRINT" YOU MADE YOUR CONTRACT"
- 3010 PRINT" PLUS";T3;"OVERTRICK(S)."
- 3020 IF LEFT$(Q$,1)="D" THEN 3040 ELSE PRINT:PRINT" CONTINUE ";:INPUT D$:IF LEN(D$)=0 THEN 90
- 3030 IF MID$(D$,1,1)="N" THEN STOP ELSE GOTO 90
- 3040 PRINT:PRINT" THE HAND YOU JUST":PRINT"PLAYED WAS #";:PRINT A9:END
- 3050 FOR I=1 TO 7:Z$=MID$(N$,I,1)+MID$(B$,6-X(K),1):IF Z$<=S$ THEN 3070
- 3060 D$=Z$:RETURN
- 3070 NEXT:RETURN
- 3080 FOR I=1 TO 7:Z$=MID$(N$,I,1)+MID$(B$,6-X(L),1):IF Z$<=S$ THEN 3100
- 3090 D$=Z$:RETURN
- 3100 NEXT:RETURN
- 3110 FOR I=1 TO 7:Z$=MID$(N$,I,1)+MID$(B$,6-X(L),1):IF Z$<=S$ THEN 3130
- 3120 D$=MID$(N$,I+1,1)+MID$(B$,6-X(L),1):RETURN
- 3130 NEXT:RETURN
- 3140 FOR I=1 TO 7:Z$=MID$(N$,I,1)+MID$(B$,1,1):IF Z$<=S$ THEN 3160
- 3150 D$=Z$:RETURN
- 3160 NEXT:RETURN
- 3170 T2=P(K)+P(L):IF K-2*INT(K/2)=0 THEN T2=T2-2
- 3180 F1=0:IF MID$(S$,1,1)<"2" THEN RETURN ELSE IF MID$(Z$,1,1)="3" THEN 3200
- 3190 IF MID$(Z$,1,1)="4" THEN 3210 ELSE IF MID$(Z$,1,1)="5" THEN 3240 ELSE IF MID$(Z$,1,1)="6" THEN 3270 ELSE IF MID$(Z$,1,1)="7" THEN 3280
- 3200 IF T2<23 THEN 3290 ELSE 3300
- 3210 IF T2<26 THEN 3290
- 3220 T1=LEN(E$):IF MID$(E$,T1-3,2)="3X" THEN 3290
- 3230 IF MID$(Z$,2,1)="X" THEN 3290 ELSE 3300
- 3240 IF T2<29 THEN 3290 ELSE IF T2>30 THEN RETURN ELSE T1=LEN(E$)
- 3250 IF MID$(E$,T1-3,2)="4S" THEN 3290
- 3260 IF MID$(E$,T1-3,2)="4H" THEN 3290 ELSE 3300
- 3270 IF T2<33 THEN 3290 ELSE 3300
- 3280 IF T2<37 THEN 3290 ELSE IF S$=MID$(E$,2*(K1-1)-3,2) THEN 3290 ELSE RETURN
- 3290 F1=1:C(K1)=1:RETURN
- 3300 IF T2>30 THEN RETURN
- 3310 FOR I2=1 TO 5:IF MID$(Z$,2,1)<>MID$(B$,I2,1) THEN 3330
- 3320 T1=VAL(MID$(Z$,1,1)):I=I2
- 3330 NEXT:IF I=1 THEN 3350 ELSE IF I>3 THEN 3360
- 3340 IF T1>5 THEN 3290 ELSE RETURN
- 3350 IF T1>3 THEN 3290 ELSE RETURN
- 3360 IF T1>4 THEN 3290 ELSE RETURN
- 3370 F1=0:IF MID$(E$,T1-5,6)="DB0000" THEN RETURN ELSE T2=P(1)+P(3):I=3*VAL(LEFT$(S$,1))+13:IF I>=T2 THEN F1=2
- 3380 RETURN
-